﻿
using SharpDX.Direct3D;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI;
using Windows.UI.Composition;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Hosting;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

//“空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 上有介绍

namespace Sharp2DTest
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

        }
        public static void InitializeFrostedGlass2(UIElement glassHost, float BlurAmount, Color ColorSource)
        {
            Visual hostVisual = ElementCompositionPreview.GetElementVisual(glassHost);
            Compositor compositor = hostVisual.Compositor;
            // Create a chained effect graph using a BlendEffect, blending color and blur
            var graphicsEffect = new Yinyue200.Sharp2D.Direct2D.Effects.BlendEffect
            {
                Background = new Yinyue200.Sharp2D.Direct2D.Effects.ColorSourceEffect()
                {
                    Name = "Tint",
                    Color = Windows.UI.Colors.White,
                },

                Foreground = new Yinyue200.Sharp2D.Direct2D.Effects.GaussianBlurEffect()
                {
                    Name = "Blur",
                    Source = new CompositionEffectSourceParameter("Backdrop"),
                    BlurAmount = (float)99,
                    BorderMode = Yinyue200.Sharp2D.Direct2D.Effects.EffectBorderMode.Hard,
                }
            };

            var blurEffectFactory = compositor.CreateEffectFactory(graphicsEffect);

            // Create EffectBrush, BackdropBrush and SpriteVisual
            var _brush = blurEffectFactory.CreateBrush();

            // If the animation is running, restart it on the new brush

            var destinationBrush = compositor.CreateBackdropBrush();
            _brush.SetSourceParameter("Backdrop", destinationBrush);

            var blurSprite = compositor.CreateSpriteVisual();
            blurSprite.Size = new Vector2((float)200, (float)500);
            blurSprite.Brush = _brush;



            ElementCompositionPreview.SetElementChildVisual(glassHost, blurSprite);
        }
        public static void InitializeFrostedGlass(UIElement glassHost, float BlurAmount, Color ColorSource)
        {
            Visual hostVisual = ElementCompositionPreview.GetElementVisual(glassHost);
            Compositor compositor = hostVisual.Compositor;
            var graphicsEffect = new Yinyue200.Sharp2D.Direct2D.Effects.BlendEffect
            {
                Background = new Yinyue200.Sharp2D.Direct2D.Effects.ColorSourceEffect()
                {
                    Name = "Tint",
                    Color = Windows.UI.Colors.White,
                },

                Foreground = new Yinyue200.Sharp2D.Direct2D.Effects.GaussianBlurEffect()
                {
                    Name = "Blur",
                    Source = new CompositionEffectSourceParameter("backdropBrush"),
                    BlurAmount = (float)99,
                    BorderMode = Yinyue200.Sharp2D.Direct2D.Effects.EffectBorderMode.Hard,
                }
            };
            //  创建效果实例并设定源
            var backdropBrush = compositor.CreateBackdropBrush();
            var effectFactory = compositor.CreateEffectFactory(graphicsEffect);
            graphicsEffect.Dispose();
            var effectBrush = effectFactory.CreateBrush();

            effectBrush.SetSourceParameter("backdropBrush", backdropBrush);

            // 创建一个Visual对象来承载效果
            var glassVisual = compositor.CreateSpriteVisual();
            glassVisual.Brush = effectBrush;

            // 将模糊效果添加为可视化树的成员
            ElementCompositionPreview.SetElementChildVisual(glassHost, glassVisual);

            // 保证效果拥有者和可视化始终保持相同大小
            var bindSizeAnimation = compositor.CreateExpressionAnimation("hostVisual.Size");
            bindSizeAnimation.SetReferenceParameter("hostVisual", hostVisual);

            glassVisual.StartAnimation("Size", bindSizeAnimation);
        }
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            ProjectNeonHelper.InitializeFrostedGlass(aaa,10f,Windows.UI.Colors.WhiteSmoke);

            return;
            while (true)
            {
                await System.Threading.Tasks.Task.Delay(500);
                var display = Windows.Graphics.Display.DisplayInformation.GetForCurrentView();
                using (Yinyue200.Sharp2D.Drawing.ImageMaker tbim = new Yinyue200.Sharp2D.Drawing.ImageMaker((int)(340d*display.RawPixelsPerViewPixel), (int)(586d * display.RawPixelsPerViewPixel), false, false ))
                {
                    tbim.TextBlockImageSource.RenderTarget.DotsPerInch = new SharpDX.Size2F(display.LogicalDpi, display.LogicalDpi);
                    tbim.TextBlockImageSource.BeginDraw();
                    //tbim.TextBlockImageSource.RenderTarget.Clear(Yinyue200.Sharp2D.DirectWrite.Controls.TextBlockImageMaker.ConvertToColorF(Windows.UI.Colors.Transparent));
                    tbim.TextBlockImageSource.RenderTarget.Clear(null);
                    using (var brush = new SharpDX.Direct2D1.SolidColorBrush(tbim.TextBlockImageSource.RenderTarget, Yinyue200.Sharp2D.Converter.CommonConverter.ConvertToColorF(Windows.UI.Colors.Red)))
                    {
                        using (var format = new SharpDX.DirectWrite.TextFormat(tbim.DirectWriteFactory, "Segoe UI", 15) { TextAlignment = SharpDX.DirectWrite.TextAlignment.Leading })
                        {
                            using (var layout = new SharpDX.DirectWrite.TextLayout(tbim.DirectWriteFactory, text, format, 340, 586))
                            {
                                tbim.TextBlockImageSource.RenderTarget.DrawTextLayout(new SharpDX.Mathematics.Interop.RawVector2(0, 0), layout, brush);
                                
                            }
                        }
                    }
                    tbim.TextBlockImageSource.EndDraw();
                    tb.Source = tbim.Source;
                    break;
                }
            }
            block.Text = text;

            //SharpDX.DirectWrite.Factory fac = new SharpDX.DirectWrite.Factory();





            //foreach(var one in tb.ImageSource.TextLayout.GetLineMetrics())
            //{
            //    System.Diagnostics.Debug.WriteLine("line:" + "height:" + one.Height + "baseline" + one.Baseline + "length" + one.Length + "newlinelength" + one.NewlineLength + "trim:" + one.IsTrimmed.ToString() + "while:" + one.TrailingWhitespaceLength);
            //}
        }
        string text = @" “林……林微，你怎么醒了……”看到林微，林勇大惊失色，他找大夫看过林微伤势，那大夫信誓旦旦道非三五日不可能转醒，可为何只是一夜这林微就醒了。

    而话刚出口，林勇就知道不好。

    再看那年轻的黄衣道人，脸色已经满是疑虑，他听林勇惊慌失言，又见突然闯入一个和当年林旭有**分相似的少年，若是看不出问题，那他还修什么仙。

    林方虽然在村中也是一霸，无人敢惹，但在正统的仙门弟子面前，那就什么都不是了。黄衣道人脸一沉，林方和林勇已经是抖个不停，吓的连话都说不出，林微见状，却是不卑不亢，将事情经过一一道来，尤其讲到林方父子为夺人资格，推自己入枯井险些丢了性命的时候，黄衣道人已经是怒发冲冠，一拍桌子站了起来，那桌子直接被震的粉碎，这一掌的力道，怕是有千斤之重。

    “卑鄙小人，竟敢骗我！”仙门弟子威势十足，他自然看得出来林微所说的是句句属实，而林方林勇二人则是面色铁青，自知理亏又哪敢狡辩。

    被几个凡人施计欺骗，那也是辱没了仙门弟子的名声，若是传出去，还不让同道笑掉大牙，就见这黄袍道人身形一闪，林微只感觉屋中风声呼啸，再看，屋子里除自己和铃铛，以及那黄袍道人之外，再无其他人。

    只听到屋子外面传来林方林勇等人的凄惨哀嚎，也不知道眼前这位仙门弟子是如何惩治那一对父子的，又是如何将他们丢出屋子的。

    “师门有令，不得妄杀凡人，只是死罪可免活罪难逃，就断了他们腿骨稍作惩戒，谅他们再不敢作奸犯科。”黄袍道人说完，看向林微却是带着一丝欣慰，上下打量，喃喃自语：“好苗子，灵根虽为下品，但遇事不慌，沉稳老道，很对我脾气，模样更是和当年恩公有**分相似，看来，你才是恩公之子，只可惜他们夫妻去的早，我当年虽也听说他二人故去的消息，但因门中有要事脱身不得无法赶来，实在是遗憾。”

    林微这时候已经知道眼前这黄袍道人就是当年父亲曾经救过的那个仙门弟子，不过那也是十年前的事情，可眼前这位看样子也是翩翩少年，不过比自己年长几岁的样子，十年前他才多大？

    不过转念一想，林微便知道是怎么回事了，空山玄宗修的是长生之仙，驻颜之术当世无双，门下弟子，便是年过半百，凡人看来也如同少年一般，这就是仙门妙处。

    提到故去的父母林微悲从心来，真情流露，那黄衣道人虽然是修仙之人，但也不禁有些唏嘘。

    “林微，你父亲当年对我有救命之恩，我曾许诺十年之期，想必你也知道了，那么，你可愿随我去空山修炼？”黄袍道人这时候正色道。

    此刻林微已经知道这道人叫做吕宗岩，玄宗六代弟子，听到对方问话，林微没有立刻回答，却是低头沉思，而一旁铃铛见林微没有立刻答应下来，心里替林微着急，她自然知道空山玄宗乃是当世正派仙门，入门极难，可一旦成为仙门弟子，以后定然会平步青云，这种机会还考虑什么，直接答应就是。

    却不知林微心中正在衡量，他若是拜入空山玄宗，铃铛必然无法一起跟随，到时候自己去仙门修仙，还不知何年何月才能回来，留铃铛一人在家如何能放心，况且林微还有一个更大的图谋，如果现在就跟吕宗岩上空山，定然会错失这一个机缘。

    这机缘，和仙官有关。

    思前想后，林微心下已经有了决断，却是躬身一礼，道：“前辈，可否带铃铛一起去玄宗？”

    一旁铃铛眼睛睁大，看着林微，手指略微有些颤抖。吕宗岩一听则是面露难色，背手渡了几步回道：“不可，你由我接引入门，只能从记名弟子做起，记名弟子需炼心三年，第一年砍材挑水，第二年才传修炼功法，第三年考核修业，若不合格，循环三年苦功，合格之后，才为外宗弟子，只有外宗弟子才可携仆在侧，你若想带铃铛，需熬得过那三年苦功成为外宗弟子才行。”

    “不可通融？”林微追问一句。

    “宗门规矩，无人可改！”吕宗岩神色肃穆，毫无商量。

    林微笑道：“那林微只能辜负前辈的好意，铃铛从小与我一起长大，我入玄宗留她一人在此地，林微实在做不到。”

    听到林微的话，吕宗岩也是相当吃惊，别人听说可以进入玄宗修仙，哪个不是削减脑袋想要挤进来，偏偏这林微竟然是拒绝了。

    只是为了一个林家的养女？

    吕宗岩是吃惊，那铃铛现在就是又气又恼，急得直跺脚，她气恼的是林微意气用事，如此良机如果错过，怕是此生再无机会进入玄宗这种门派，更担心林微的前途。

    “少爷，你不能……”铃铛刚想开口，林微知道她要说什么，直接用一句话将她堵回去。

    “铃铛，当年那道姑要收你为徒，你为何不去，你能为我林微放弃机会，我林微又岂能弃你于不顾，留你一人孤苦伶仃在这里，况且就是不入玄宗，我林微也能傲然于世，做一番轰轰烈烈的事迹。”

    林微这番话说的斩钉截铁雄心壮志，铃铛咬着嘴唇竟是无言以对，小丫头心中早已经是百般滋味涌出来，大眼睛又蒙上雾气，心道少爷待我如此，便是立刻为少爷死了也值。

    一旁吕宗岩也是目露欣赏，沉声道：“好心性，果然和林恩公是一模一样，当年我曾邀恩公入玄宗，他也是断然拒绝，说家有妻儿，他若修仙，便无法陪伴妻儿，这才有了十年之约。只是林微，你真的决定如此？”

    林微点头，目光坚定，吕宗岩直言罢了罢了，随即从怀中取出一物递给林微，是一块木牌，通体乌色，沉重如铁，上刻“空山吕宗岩”五个大字。

    “林微，若是哪天你回心转意，想去修仙，可上空山来寻我，只要给巡山弟子出示此木牌便可，记住，这是你的仙缘，得之不易，自己珍重吧！”

    说完，吕宗岩大步踏出屋子，铃铛追出去一看，已经是没了踪影，也不知道是飞天了还是遁地了。

    “少爷，你为了铃铛错失仙缘，实在不应该。”铃铛闷闷不乐的走回来，在她看来，林微的前途比自己的命都要重要。

    林微笑了笑，上前刮了刮铃铛的鼻子，只说了一句话：“做饭，少爷饿了。”

    铃铛一跺脚，气的跑出去忙活，林微则是坐在门前凳子上沉思，说实话，若非重生一次，林微也不可能做出这种放弃入玄宗的傻事，但他既然这么做了，就必然有这么做的理由。

    上一世，林微依靠自身努力，在吴国坐到二品大员的位置，显然不是愚笨之辈，他见识也广。入空山玄宗的这个机会固然好，但林微所图更大，要知道玄宗弟子众多，就算林微天资卓越，可玄宗弟子哪个不是千挑万选出来的，去了多半也只会湮灭在众多天才弟子当中，难有出头之日。况且仙，不是那么好修的，天下修士多如牛毛，可真正成仙的又有几个？

    当然，若不是林微要寻一个机缘，入玄宗也比窝在这穷山僻壤之地强了万倍，现在，就要说说那机缘了。

    这个机缘，和一个人有关，确切的说，是在一个人身上。

    林微再世为人，最大的资本就是他的阅历和知识。上一世，林微已是二品大员，但就是因为得罪了一位仙官，最后身败名裂，被斩首示众，所以这一世，林微思前想后，定下了他的目标，那就是成为仙官。

    何为仙官？

    统御三界十二国，九天之上‘仙朝’所属之官，入仙籍，名录天书地卷，地位更在一般修士和仙人之上。

    也就是说，林勇即便是在空山玄宗修仙有成，成为修士，也不如一位哪怕是最普通的仙官，因为仙官代表了‘仙朝’之威，九天众仙，三界十二国都归仙朝管辖统御，管天管地，人神鬼怪皆是仙朝子民，谁又敢触怒仙朝之威？

    不过想要成为仙官，难度可想而知，对于一般庶人来说，根本就是不可能。可林微想到一条路，若是成功，那自己就有可能踏入仙官之途，而这件事的关键，就在于林微要找的那个人身上。

    重生的好处就在此处，可以获知未来之走向。

    林微在上一世为官时，曾偶然得知一位手段通天的‘阴官’也是临县人，叫做卫渊。因为是老乡，林微就打听了一下卫渊的经历，原来对方原本只是凡人，但修阴德，死后才被地府封为‘七品阴官’。

    千万别小瞧这七品阴官，虽然并不属于真正的仙官，但也是名入地卷，最重要的是，卫渊那七品阴官主职降伏恶鬼，有权自行封一位随行鬼差。";

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            if(grid.Background==null )
            {
                grid.Background  = new ImageBrush() { ImageSource = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri("ms-appx:///Assets/enterdesk (6).jpg")) };
            }
            else
            {
                grid.Background = null;
            }
        }
    }
}
